package com.example.lib_router_anntation

annotation class BindView(val value: Int)
annotation class BindView2(val value: Int)
annotation class BindView3(val value: Int)


@Retention(AnnotationRetention.BINARY)
@Target(AnnotationTarget.CLASS, AnnotationTarget.FUNCTION)
annotation class RouterPath(
    val scheme: String
)

@Retention(AnnotationRetention.BINARY)
@Target(AnnotationTarget.CLASS)
annotation class RouterService(
    val identity: String = ""
)

@Retention(AnnotationRetention.BINARY)
@Target(AnnotationTarget.CLASS)
annotation class RouterServiceImpl(
    val singleton: Boolean = true,
    val identity: String = ""
)

data class RouterServiceData(val cls: Class<*>, val singleton: Boolean)

interface Module {
    fun getRouterPath(): Map<String, Class<*>>
    fun getRouterService(): Map<String, Class<*>>
    fun getRouterServiceImpl(): Map<String, RouterServiceData>
}